Computer resources in large systems do not usually reside in the same place but are distributed in various locations or nodes. Using a set of resources in far-apart locations can degrade system performance because of the long time it takes for the data to be processed by different resources, or for one resource to communicate with another resource, etc. An intelligent computer system may be able to allocate resources closer to each other. However, this system usually requires an operating system (OS) program to be fully aware of the platform or system topology including the particular location of each of the resources, how these resources are connected, etc. In these conditions, a system can work with only one topology. If the topology is changed, then the operating system needs to be reconfigured for it to learn the new topology. Further, one topology may be suitable for one particular operating system but not for another one.
Based on the foregoing, it is clearly desirable that mechanisms be provided to solve the above deficiencies and related problems.